package net.groupme.logging;

import net.groupme.logging.model.ActionIdentifier;
import net.groupme.model.Resource;
import net.groupme.model.User;

public interface GroupMeNavigationLogger {

	/**
	 * This method logs a general event like a user click.
	 * @param user the user
	 * @param sessionID the Session ID of the user
	 * @param actionID ID of fulfilled action
	 */
	public abstract void log(User user, String sessionID, ActionIdentifier actionID);

	/**
	 * This method logs a navigation event free keyword search, search by tag, resource click,...
	 * @param user the user
	 * @param sessionID the Session ID of the user
	 * @param actionID ID of fulfilled action
	 * @param searchString free search string or value of tag (in case that the user clicks on a tag (e.g. within a tag cloud)
	 * @param browsedResource value of the resource that is visited 
	 */
	public abstract void logNavigation(User user, String sessionID, ActionIdentifier actionID,
			String searchString, Resource browsedResource);

	/**
	 * This method logs a search event like free keyword search or search by tag...
	 * @param user the user
	 * @param sessionID the Session ID of the user
	 * @param actionID ID of fulfilled action
	 * @param searchString free search string or value of tag (in case that the user clicks on a tag (e.g. within a tag cloud)
	 */
	public abstract void logSearch(User user, String sessionID, ActionIdentifier actionID,
			String searchString);

	/**
	 * This method logs a navigation event like user's click on a resource...
	 * @param user the user
	 * @param sessionID the Session ID of the user
	 * @param actionID ID of fulfilled action
	 * @param browsedResource value of the resource that is visited 
	 */
	public abstract void logBrowsing(User user, String sessionID, ActionIdentifier actionID,
			Resource browsedResource);

}